#!/usr/bin/env python3
# Created by han on 2016/6/13

import re, os, sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from module import log


def adds(arg):
    """
    计算加法
    :param arg:是加法的字符串
    :return: 算出结果
    """
    ret = re.split(r"(\W?\d+\.?\d*)(\W)?", arg)   #找到称号并分割，保留符号，(r"(\W?\d+\.?\d*)(\W)?" [(-\W? 5\d+ .\.? 5\d*, +(\W)? , -1 +  5 + 15 ]
    li = []
    for i in ret:                           #循环列表
        if i:                                   #分割后的列表中有可能会有空格
            li.append(i)                    #将分割后的空格去除
    print("需要做加减的表达式", li)
    num = float(li[0])                      #获取第一个数字
    for r in range(len(li)):                #以列表的长度循环
        if r % 2 != 0:                      #如果这个位置除以2不等以零代表着是符号
            if li[r] == "+":                #如果这个符号是+
                num += float(li[r + 1])     #用第一个数+符号后面的数字
                print(num)
                log.logger.info(num)
            else:
                num -= float(li[r + 1])     #是减则处理减法
                print(num)
                log.logger.info(num)
        else:
            continue
    return num


def mul(arg):
    """
    计算乘除法
    :param arg:含有乘或除的字符串
    :return: 返回出计算结果
    """
    li = re.split("([*/])",arg)         #以* 或 / 做分割，并且保留这些符号
    print('计算',li)
    num = float(li[0])                  #获取公式中第一个数字
    for i in range(len(li)):            #以公式的长度循环整个公式
        if i % 2 != 0:                  #如果这个公式的位置 /2 不等于零，表示就是 符号
            if li[i] == "*":            #这个符号如果是 *
                num *= float(li[i+1])   #用第一个数字乘以这个符号后面的数字
                log.logger.info( num)
                continue                #操作完再循环下次操作
            else:
                num /= float(li[i+1])   #如果不是称号就是除号，则计算除法
                log.logger.info(num)
    log.logger.info(num)
    return num                          #返回最后计算后的数字
